#include #include #include "visa.h" int main(int argc, char* argv[]) { ViSession rm = VI_NULL, vi = VI_NULL; ViStatus status; char string[256]; ViUInt32 retCnt; int i = 0; bool lockflag = false; bool bLockState = false; if (argc == 2 && argv[1][0] == '-' && argv[1][1] == 'l') { lockflag = true; } status = viOpenDefaultRM(&rm); if (status < VI_SUCCESS) goto error; status = viOpen(rm, "GPIB8::1::INSTR", NULL, NULL, &vi); if (status < VI_SUCCESS) goto error; for (i = 1; i < 100; i++) { if (lockflag) { viLock(vi, VI_EXCLUSIVE_LOCK, VI_TMO_INFINITE, NULL, NULL); bLockState = true; } status = viWrite(vi, (ViBuf) "ch1:scale?", 10, &retCnt); if (status < VI_SUCCESS) goto error; status = viRead(vi, (ViBuf) string, 256, &retCnt); if (status < VI_SUCCESS) goto error; printf("%d: scale %s", i, string); status = viWrite(vi, (ViBuf) "ch1:position?", 13, &retCnt); if (status < VI_SUCCESS) goto error; status = viRead(vi, (ViBuf) string, 256, &retCnt); if (status < VI_SUCCESS) goto error; printf("%d: position %s", i, string); if (lockflag) { viUnlock(vi); bLockState = false; } } viClose(vi); viClose(rm); return 0; error: viStatusDesc(rm, status, string); fprintf(stderr, "Error: %s\n", (ViBuf) string); if (bLockState && vi != VI_NULL) viUnlock(vi); if (vi != VI_NULL) viClose(vi); if (rm != VI_NULL) viClose(rm); return 0; }